package org.example.demo.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.example.demo.entity.IntroducerUser;

import java.util.List;

/**
 * 介绍人用户关联服务接口
 */
public interface IntroducerUserService extends IService<IntroducerUser> {

    /**
     * 分页查询介绍人用户关联
     * 
     * @param introducerUser 查询条件
     * @param pageNum        页码
     * @param pageSize       每页大小
     * @return 分页结果
     */
    Page<IntroducerUser> selectPage(IntroducerUser introducerUser, Integer pageNum, Integer pageSize);

    /**
     * 根据介绍人ID查询关联的用户ID列表
     *
     * @param introducerId 介绍人ID
     * @return 用户ID列表
     */
    List<Long> getUserIdsByIntroducerId(Long introducerId);

    /**
     * 根据用户ID查询关联的介绍人ID列表
     *
     * @param userId 用户ID
     * @return 介绍人ID列表
     */
    List<Long> getIntroducerIdsByUserId(Long userId);

    /**
     * 批量保存介绍人与用户的关联关系
     *
     * @param introducerId 介绍人ID
     * @param userIds      用户ID列表
     * @return 是否保存成功
     */
    boolean saveBatch(Long introducerId, List<Long> userIds);

    /**
     * 删除介绍人与用户的关联关系
     *
     * @param introducerId 介绍人ID
     * @param userId       用户ID
     * @return 是否删除成功
     */
    boolean remove(Long introducerId, Long userId);
}